// var m = new Map([["2", ["a", "b", "c"]], ["3", ["d", "e", "f"]],
// ["4", ["d", "h", "i"]], ["5", ["j", "k", "l"]],
// ["6", ["m", "n", "o"]], ["7", ["p", "q", "r", "s"]],
// ["8", ["t", "u", "v"]], ["9", ["w","x", "y", "z"]]])

// function getString(keys = "23") {
//     var arrKeys = keys.split("");
//     var result = []
//     for(key in arrKeys){
//         var values=m.get(key);
//         if(result.length==0){
//             for(val in values){
//                 result.push(val);
//             }
//         }else{
//             var res=[];
//             for(var i=0;i<values.length;i++){
//                 for(var j=0;j<result.length;j++){
//                     res[i]=result[j]+values[i];
//                 }
//             }
//         }        
//     }
// }
// getString();
// console.log(obj);

var letterCombinations = function (digits) {
    if (!digits.length) {
        return []
    }
    var map = {
        '2': ['a', 'b', 'c'],
        '3': ['d', 'e', 'f'],
        '4': ['g', 'h', 'i'],
        '5': ['j', 'k', 'l'],
        '6': ['m', 'n', 'o'],
        '7': ['p', 'q', 'r', 's'],
        '8': ['t', 'u', 'v'],
        '9': ['w', 'x', 'y', 'z']
    }
    function lc(digits, i) {
        if (digits.length - i === 1) {
            return map[digits[i]]
        }
        var answer = []
        map[digits[i]].forEach(str => {
            lc(digits, i + 1).forEach(result => {
                answer.push(str + result)
            })
        })
        return answer
    }
    return lc(digits, 0)
}
// console.log(letterCombinations("23"));


function getStr(str) {
    if (!str.length) {
        return []
    }
    var map = {
        '2': ['a', 'b', 'c'],
        '3': ['d', 'e', 'f'],
        '4': ['g', 'h', 'i'],
        '5': ['j', 'k', 'l'],
        '6': ['m', 'n', 'o'],
        '7': ['p', 'q', 'r', 's'],
        '8': ['t', 'u', 'v'],
        '9': ['w', 'x', 'y', 'z']
    }
    function getD(str, i) {
        if (i == 1) {
            return map[str[i - 1]]
        } else {
            var result = [];
            map[str[i - 1]].forEach((b) => {
                getD(str, i - 1).forEach((a) => {
                    result.push(a + b);
                })
            })
            return result;
        }
    }
    return getD(str, str.length);
}
console.log(getStr("23"));


